package com.smart.manager.wiki.controller;

import cn.dev33.satoken.annotation.SaCheckPermission;
import com.smart.common.entities.ajax.AjaxResult;
import com.smart.common.entities.constant.ArcoTips;
import com.smart.common.entities.constant.SmartConstant;
import com.smart.common.entities.core.Page;
import com.smart.manager.wiki.entities.body.RPopHelp;
import com.smart.manager.wiki.entities.models.WikiPopHelp;
import com.smart.manager.wiki.entities.repository.PopHelpRepository;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotEmpty;
import java.util.List;


@Api(tags = "渠道帮助管理")
@RestController
@RequestMapping(SmartConstant.MANAGER_API_PREFIX + "wiki/pop/help")
@RequiredArgsConstructor
@Slf4j
public class PopHelpApi {

    private final PopHelpRepository popHelpRepository;

    @GetMapping(value = "pageList")
    @ApiOperation(value = "查询帮助")
    @SaCheckPermission("wiki:pop:help:pageList")
    public AjaxResult<Page<WikiPopHelp>> pageList(@Validated RPopHelp.SearchBody body) {
        Page<WikiPopHelp> result = popHelpRepository.pageList(body);
        return AjaxResult.data(result);
    }


    @PostMapping(value = "add")
    @ApiOperation(value = "新增帮助")
    @SaCheckPermission("wiki:pop:help:add")
    public AjaxResult<String> add(@RequestBody @Validated RPopHelp.EditBody body) {
        popHelpRepository.add(body);
        return AjaxResult.success();
    }


    @PutMapping(value = "update/{id}")
    @ApiOperation(value = "修改帮助")
    @SaCheckPermission("wiki:pop:help:update")
    public AjaxResult<String> update(@PathVariable Long id, @RequestBody @Validated RPopHelp.EditBody body) {
        popHelpRepository.update(id, body);
        return AjaxResult.success();
    }


    @DeleteMapping(value = "delete")
    @ApiOperation(value = "删除帮助")
    @SaCheckPermission("wiki:pop:help:delete")
    public AjaxResult<Integer> delete(@RequestBody @NotEmpty(message = ArcoTips.PK_EMPTY) List<Long> ids) {
        int x = popHelpRepository.delByIds(ids);
        return AjaxResult.delSuccess(x);
    }

}
